﻿using System;
using System.Linq;
using System.Collections.Generic;
using SIM.Geo.DA;
using SIM.Geo.BE;

namespace SIM.Geo.BL
{
    public class BLAvanceDiarioSonsajes
    {

        #region Metodos
        /// <summary>
        /// Método que devuelve la lista de AvanceDiarioSonsajes
        /// </summary>
        /// <returns></returns>
        public List<AvanceDiarioSonsajes> ListarAvanceDiarioSonsajes(int codigoAvanceDiario)
        {
            return Accesor.ListarAvanceDiarioSonsajes(codigoAvanceDiario);
        }
        /// <summary>
        /// Método para insertar una AvanceDiarioSonsajes
        /// </summary>
        /// <param name="AvanceDiarioSonsajes"></param>
        /// <returns></returns>
        public int InsertarAvanceDiarioSonsajes(AvanceDiarioSonsajes avanceDiarioSonsajes)
        {
            return Accesor.InsertarAvanceDiarioSonsajes(avanceDiarioSonsajes);
        }
        /// <summary>
        /// Método para modificar un AvanceDiarioSonsajes
        /// </summary>
        /// <param name="AvanceDiarioSonsajes"></param>
        public void ModificarAvanceDiarioSonsajes(AvanceDiarioSonsajes avanceDiarioSonsajes)
        {
            Accesor.ModificarAvanceDiarioSonsajes(avanceDiarioSonsajes);
        }
        /// <summary>
        /// Método para eliminar AvanceDiarioSonsajes
        /// </summary>
        /// <param name="AvanceDiarioSonsajes"></param>
        public void EliminarAvanceDiarioSonsajes(int codigoAvanceDiario, int codigoSondaje)
        {
            var avanceDiarioSonsajes = Accesor.ObtenerAvanceDiarioSonsajes(codigoAvanceDiario, codigoSondaje);
            Accesor.EliminarAvanceDiarioSonsajes(avanceDiarioSonsajes);
        }

        /// <summary>
        /// Método que devuelve AvanceDiarioSonsajes por codigo
        /// </summary>
        /// <param name="codigoAvanceDiarioSonsajes"></param>
        /// <returns></returns>
        public AvanceDiarioSonsajes ObtenerAvanceDiarioSonsajes(int codigoAvanceDiario, int codigoSondaje)
        {
            return Accesor.ObtenerAvanceDiarioSonsajes(codigoAvanceDiario, codigoSondaje);
        }

        /// <summary>
        /// Método que devuelve la lista de AvanceDiarioSonsajes Por Avance diario
        /// </summary>
        /// <returns></returns>
        public List<listarAvanceDiarioSondajes_Result> ListarAvanceDiarioSonsajesPorAvanceDiario(int codigoAvanceDiario)
        {
            return Accesor.ListarAvanceDiarioSonsajesPorAvanceDiario(codigoAvanceDiario);
        }

        /// <summary>
        /// Método que devuelve la lista de AvanceDiarioSonsajes Por Avance diario
        /// </summary>
        /// <returns></returns>
        public List<AvanceDiarioSondajeResponse> ListarAvanceDiarioSonsajesPorAvanceDiario1(int codigoAvanceDiario)
        {
            var lista = Accesor.ListarAvanceDiarioSonsajesPorAvanceDiario(codigoAvanceDiario);
            var result = lista
                .Select(x => new AvanceDiarioSondajeResponse
                {
                    CodigoAvanceDiario = x.CodigoAvanceDiario,
                    CodigoSondaje = x.CodigoSondaje,
                    NombreDDH = x.NombreDDH,
                    AvanceDesde = x.AvanceDesde,
                    AvanceHasta = x.AvanceHasta,
                    CodigoLabor = x.CodigoLabor,
                    NombreLabor = x.NombreLabor,
                    CodigoZona = x.CodigoZona,
                    NombreZona = x.NombreZona,
                    Azimut = x.Azimut,
                    Detalles = new DADetallePerforacion().BuscarDetallePerforacion1(codigoAvanceDiario, x.CodigoSondaje).ToList()
                }
                ).ToList();

            return result;
        }
        #endregion

        #region Accesor
        private static DAAvanceDiarioSonsajes Accesor
        {
            [System.Diagnostics.DebuggerStepThrough]
            get { return new DAAvanceDiarioSonsajes(); }
        }
        #endregion
    }
}
